/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package db.interfaces;

import core.Course;
import core.Program;
import core.School;
import core.User;
import java.util.Collection;

/**
 *
 * @author Anton
 */
public interface ProgramDAO
{    
    Program getProgramById(long id);

    Collection<Program> searchForProgramsByName(String beginsWith);
    Collection<Program> searchForProgramsByProgramId(String beginsWith);
    Collection<Program> searchForProgramsByParameters(String beginsWith, String fieldName, boolean asc);
    Collection<Program> getProgramsByName(String name);
    Collection<Program> getProgramsByProgramId(String programId);
    Collection<Program> getAllPrograms();

    Collection<Program> getAllProgramsInSchool(School school);
    Collection<Program> getAllProgramsInUser(User user);   

    boolean addCourseToProgram(Program program, Course course);
    boolean deleteCourseFromProgram(Program program, Course course);

    boolean programIsBound(Program program);
    boolean containsProgram(Program program);
    boolean addProgram(Program program);
    boolean editProgram(Program program);
    boolean deleteProgram(Program program);
}
